﻿#pragma once

#include "Puntero.h"
#include "Cadena.h"
#include "ICiudad.h"
#include "Iterador.h"
#include "Tupla.h"

class ICiudad;
typedef Puntero<ICiudad> pCiudad;

class IAtraccion abstract
{
public:
	virtual ~IAtraccion(){}

	virtual Cadena ObtenerIdentificador() const abstract;
	virtual Cadena ObtenerNombre() const abstract;
	virtual nat ObtenerHorarioInicio() const abstract;
	virtual nat ObtenerHorarioFin() const abstract;
	virtual pCiudad ObtenerCiudad() const abstract;
	virtual nat ObtenerPrecio() const abstract;
	virtual Iterador<Tupla<nat, int, Cadena>> ObtenerCalificaciones() const abstract;

	virtual bool operator==(const IAtraccion& a) const abstract;
};
typedef Puntero<IAtraccion> pAtraccion;